package com.vtuzx.kingdee.xqc_api.service;
import com.vtuzx.core.VtuzxException;
import com.vtuzx.core.bean.dto.VtuzxMap;
import com.vtuzx.core.bean.dto.VtuzxToken;
import com.vtuzx.web.bean.VtuzxDownloadBean;
import org.bson.types.ObjectId;
import java.util.Map;
/**
 * 采购服务
 */
public interface IXqcPurContractService {
    /**
     * 保存采购合同单
     *
     * @param _userId 用户ID
     * @param name 用户名
     * @param param 采购合同单详细
     */
    VtuzxMap savePurCon(ObjectId _userId, String name, Map<String, Object> param);


    /**
     * 删除采购合同单
     *
     * @param billNo 单号
     */
    void deletePurCon(String billNo) throws VtuzxException;

    /**
     * 审核采购合同单
     *
     * @param _userId 用户ID
     * @param userName 用户名
     * @param billNo 单号
     */
    void auditPurCon(ObjectId _userId, String userName, String billNo) throws VtuzxException;

    /**
     * 反审采购合同单
     *
     * @param billNo 单号
     */
    void unAuditPurCon(String billNo) throws VtuzxException;

    /**
     * 获取采购合同单列表
     *
     * @param param 检索条件
     * @param pageIndex 页号
     * @param pageSize 页大小
     * @return 采购收货单物料箱号列表
     */
    VtuzxMap getPurConList(Map<String, Object> param, int pageIndex, int pageSize);

    /**
     * 获取采购合同单
     *
     * @param billNo 单号
     * @return 采购收货单物料箱号列表
     */
    VtuzxMap getPurCon(String billNo) throws VtuzxException;

    /**
     * 下载采购合同列表
     *
     * @param param 入参
     * @return 下载结果
     */
    VtuzxDownloadBean downloadPurCon(Map<String, Object> param) throws Exception;


    /**
     * 下推采购合同单
     *
     * @param _userId 用户ID
     * @param name 用户名
     * @param param 入参
     */
    void pushPurConOrder(ObjectId _userId, String name, Map<String, Object> param) throws VtuzxException;

    /**
     * 查询物料(包材)
     *
     * @param token Token
     * @param key 关键字
     * @param pageSize 页大小
     * @return 物料(包材)
     */
    VtuzxMap getMaterial(VtuzxToken token, String key, int pageSize);
}
